#ifndef HELPER_H
#define HELPER_H
#include <glib.h>
#include "mach.h"

#ifdef __cplusplus
extern "C" {
#endif
target_size_t helper_ldr (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_ld ( target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_ldi (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_st (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_sti (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_str (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_trap (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);

target_size_t helper_add (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_addi ( target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_and (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_andi (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_lea (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
target_size_t helper_not (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);

target_size_t helper_set_cc (target_size_t* registers, MachineStatus *ms, target_size_t pc, target_size_t insn);
int helper_dbg (size_t data);
#ifdef __cplusplus
}
#endif
#endif